package com.pluszg.nutrition.common.utils;

import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.util.regex.Pattern;

import static lombok.AccessLevel.PRIVATE;

@Slf4j
@NoArgsConstructor(access = PRIVATE)
public class NumberUtil {

    /**
     * 不够位数的在前面补0，保留num的长度位数字
     *
     * @param code
     * @param num
     * @return
     */
    public static String autoGenericCode(Integer code, int num) {
        // 0 代表前面补充0
        // num 代表长度为num
        // d 代表参数为正数型
        return String.format("%0" + num + "d", code);
    }

    /**
     * 判断字符串是否为正整数（包含0）
     *
     * @param str
     * @return
     */
    public static boolean isPositiveInteger(String str) {
        Pattern pattern = Pattern.compile("[0-9]+");
        return StringUtils.isNotBlank(str) && pattern.matcher(str).matches();
    }

    /**
     * 将十六进制字符串转换成十进制整数
     *
     * @param strHex
     * @return
     */
    public static Integer hex2Ten(String strHex) {
        Integer tenValue = null;
        if (StringUtils.isNotBlank(strHex)) {
            try {
                if (strHex.startsWith("0x")) {
                    tenValue = Integer.parseInt(strHex.substring(2), 16);
                } else {
                    tenValue = Integer.parseInt(strHex, 16);
                }

            } catch (Exception e) {
                log.error("Fail to parse int.{}", e);
            }
        }
        return tenValue;
    }
}
